﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Text;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;


public partial class SolicitudesPractica_PerfilesPracticante_GestionarCaracteristicas : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //-------------------------Lineas Agregadas para la seguridad----------------------------------------------------
        if (Session["nit"] != null)
            Response.Redirect("/SUEWebSite/Error.aspx");

        else if (Session["nomUsr"] != null)
        {
            List<String> Permisos = (List<String>)Session["Permisos"];

            if (!Permisos.Contains(System.IO.Path.GetFileName(HttpContext.Current.Request.FilePath)))
                Response.Redirect("/SUEWebSite/Error.aspx");

        }
        else Response.Redirect("/SUEWebSite/Principal.aspx");

        //-------------------------Lineas Agregadas para la seguridad----------------------------------------------------

        if (!Page.IsPostBack)
        {
            CargarListaCategorias();
        }
    }

    protected void CargarListaCategorias()
    {
        ListBoxCategorias.Items.Clear();
        CategoriaCaracteristicas tmp = new CategoriaCaracteristicas();
        List<CategoriaCaracteristicas> listcat = tmp.ObtCategoriasDeCaracteristicas();
        foreach (CategoriaCaracteristicas categoria in listcat)
            ListBoxCategorias.Items.Add(categoria.ObtNombreCategoria());
    }

    protected void CargarListaCaracteristicasDeCategoria()
    {
        ListBoxCaracteristicas.Items.Clear();
        CaracteristicaPerfil tmp = new CaracteristicaPerfil();
        List<CaracteristicaPerfil> listcat = tmp.ObtCaracteristicasDePerfil();
        foreach (CaracteristicaPerfil caracteristica in listcat)
            if (caracteristica.ObtCategoriaDeCaracteristica() == ListBoxCategorias.SelectedValue)
                ListBoxCaracteristicas.Items.Add(caracteristica.ObtNombreCaracteristica());
    }

    public void MessageBoxJS(string msg)
    {
        StringBuilder str = new StringBuilder("<script languaje = JavaScript>");
        str.Append("alert('" + msg + "');");
        str.Append("</script>");
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "PopUpScript", str.ToString());

    }

    protected void ButtonAdCategoria_Click(object sender, EventArgs e)
    {
        if (TextBoxNomCategoria.Text != "")
        {
            if (ListBoxCategorias.Items.Contains(new ListItem(TextBoxNomCategoria.Text)))
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('Ya existe una categoría con ese nombre', {timeout: 2 , showClose: false });", true);
            //LabelMensaje.Text = "Ya existe una categoria con ese nombre";
            //MessageBoxJS("Ya existe una categoria con ese nombre");
            CategoriaCaracteristicas nuevaCat = new CategoriaCaracteristicas();
            nuevaCat.AsigNombreCategoria(TextBoxNomCategoria.Text);
            string guardar = nuevaCat.GuardarCategoria();
            CargarListaCategorias();
        }
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha introducido un nombre para la categoría', {timeout: 2 , showClose: false });", true);
        //LabelMensaje.Text = "No ha introducido un nombre para la categoria";
    }

    protected void ButtonEliCategoria_Click(object sender, EventArgs e)
    {
        if (ListBoxCategorias.SelectedValue != "")
        {
            CategoriaCaracteristicas tmp = new CategoriaCaracteristicas(ListBoxCategorias.SelectedValue);
            string categoria = ListBoxCategorias.SelectedValue;
            string eliminar = tmp.EliminarCategoria();
            CargarListaCategorias();
            if (ListBoxCategorias.Items.Contains(new ListItem(categoria)))
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('Existen características contenidas en esta categoría', {timeout: 2 , showClose: false });", true);
            //LabelMensaje.Text = "Existen caracteristicas contenidas en esta categoria";
            //MessageBoxJS("Existen caracteristicas contenidas en esta categoria");
        }
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha seleccionado ninguna categoría', {timeout: 2 , showClose: false });", true);
    }

    protected void ButtonCamCategoria_Click(object sender, EventArgs e)
    {
        if (ListBoxCategorias.SelectedValue != "")
        {
            if (TextBoxNomCategoria.Text != "")
            {
                if (ListBoxCategorias.Items.Contains(new ListItem(TextBoxNomCategoria.Text)))
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('Ya existe una categoría con ese nombre', {timeout: 2 , showClose: false });", true);
                //MessageBoxJS("Ya existe una categoria con ese nombre");
                CategoriaCaracteristicas tmp = new CategoriaCaracteristicas(ListBoxCategorias.SelectedValue);
                string cambiar = tmp.ActualizarCategoria(TextBoxNomCategoria.Text);
                CargarListaCategorias();
            }
            else
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha introducido un nombre para la categoría', {timeout: 2 , showClose: false });", true);
        }
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha seleccionado ninguna categoría', {timeout: 2 , showClose: false });", true);
    }

    protected void ListBoxCategorias_SelectedIndexChanged(object sender, EventArgs e)
    {
        TextBoxNomCategoria.Text = ListBoxCategorias.SelectedValue;
        TextBoxNomCaracteristica.Text = "";
        CargarListaCaracteristicasDeCategoria();
    }

    protected void ButtonAdCaracteristica_Click(object sender, EventArgs e)
    {
        if (ListBoxCategorias.SelectedValue != "")
        {
            if (TextBoxNomCaracteristica.Text != "")
            {
                if (ListBoxCaracteristicas.Items.Contains(new ListItem(TextBoxNomCaracteristica.Text)))
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('Ya existe una característica con ese nombre', {timeout: 2 , showClose: false });", true);
                //LabelMensaje.Text = "Ya existe una caracteristica con ese nombre";
                //MessageBoxJS("Ya existe una caracteristica con ese nombre");
                CaracteristicaPerfil tmp = new CaracteristicaPerfil(TextBoxNomCaracteristica.Text, ListBoxCategorias.SelectedValue);
                string guardar = tmp.GuardarCaracteristica();
                CargarListaCaracteristicasDeCategoria();
            }
            else
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha ingresado ningún nombre para la característica', {timeout: 2 , showClose: false });", true);
            //LabelMensaje.Text = "No ha ingresado ningún nombre para la caracteristica";
        }
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha seleccionado ninguna categoría', {timeout: 2 , showClose: false });", true);
    }
    protected void ButtonEliCaracteristica_Click(object sender, EventArgs e)
    {
        if (ListBoxCategorias.SelectedValue != "")
            if (ListBoxCaracteristicas.SelectedValue != "")
            {
                CaracteristicaPerfil tmp = new CaracteristicaPerfil(ListBoxCaracteristicas.SelectedValue, ListBoxCategorias.SelectedValue);
                string caracteristica = ListBoxCaracteristicas.SelectedValue;
                string eliminar = tmp.EliminarCaracteristica();
                CargarListaCaracteristicasDeCategoria();
                if (ListBoxCaracteristicas.Items.Contains(new ListItem(caracteristica)))
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('Existen perfiles que tienen esa caracteristica asignada', {timeout: 2 , showClose: false });", true);
                //MessageBoxJS("Existen perfiles que tienen esa caracteristica asignada.");
            }
            else
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha seleccionado ninguna característica', {timeout: 2 , showClose: false });", true);
                //LabelMensaje.Text = "No ha seleccionado ninguna característica";
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha seleccionado ninguna categoría', {timeout: 2 , showClose: false });", true);
    }
    protected void ButtonCamCaracteristica_Click(object sender, EventArgs e)
    {
        if (ListBoxCategorias.SelectedValue != "")
        {
            if (ListBoxCaracteristicas.SelectedValue != "")
            {
                if (TextBoxNomCaracteristica.Text != "")
                {
                    if (ListBoxCaracteristicas.Items.Contains(new ListItem(TextBoxNomCaracteristica.Text)))
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('Ya existe una característica con ese nombre', {timeout: 2 , showClose: false });", true);
                        //LabelMensaje.Text = "Ya existe una caracteristica con ese nombre";
                        //MessageBoxJS("Ya existe una caracteristica con ese nombre");
                    CaracteristicaPerfil tmp = new CaracteristicaPerfil(ListBoxCaracteristicas.SelectedValue, ListBoxCategorias.SelectedValue);
                    string cambiar = tmp.ActualizarCaracteristica(TextBoxNomCaracteristica.Text);
                    CargarListaCaracteristicasDeCategoria();
                }
                else
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha introducido el nombre para la característica', {timeout: 2 , showClose: false });", true);
                    //LabelMensaje.Text = "No ha introducido el nombre para la caracteristica";
            }
            else
                ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha seleccionado ninguna característica', {timeout: 2 , showClose: false });", true);
                //LabelMensaje.Text = "No ha seleccionado ninguna caracteristica";
        }
        else
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", "$.modaldialog.success('No ha seleccionado ninguna categoría', {timeout: 2 , showClose: false });", true);
            //LabelMensaje.Text = "No ha seleccionado alguna categoria";
    }
    protected void ListBoxCaracteristicas_SelectedIndexChanged(object sender, EventArgs e)
    {
        TextBoxNomCaracteristica.Text = ListBoxCaracteristicas.SelectedValue;
    }
}
